package com.pangus.toolkits.files.model;

import javax.annotation.Nullable;
import java.io.File;
import java.io.IOException;

/**
 * @author yingheng chen
 * @description
 * @date 2019/12/3
 */
public interface FileOperation {


    /**
     * 下载文件到指定文件夹,文件名与服务器文件名相同,失败会抛出异常
     *
     * @param directory 本地文件夹路径,可以为相对或绝对路径
     * @return 保存到本地的文件对象
     * @throws IOException 网络异常
     */
    File download(String directory) throws IOException;

    /**
     * 下载文件到指定文件夹
     *
     * @param directory 本地文件夹路径,可以为相对或绝对路径
     * @param filename  保存到本地的文件名
     * @return 保存到本地的文件对象
     * @throws IOException
     */
    File download(String directory, @Nullable String filename) throws IOException;

    /**
     * 删除文件
     * 该操作不可逆，谨慎使用
     *
     * @throws IOException
     */
    void delete() throws IOException;


    /**
     * 获取文件元信息,不可用时返回null
     *
     * @return 文件元信息
     */
    @Nullable
    FileInfo getFileInfo();
}
